//
//  IFAABaseInfo.h
//  esand_ios_demo
//
//  Created by ReidLee on 2018/2/7.
//  Copyright © 2018年 esandinfo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "IFAACommon.h"

/**
 * IFAA基础类
 */
@interface IFAABaseInfo:NSObject

// 生物认证类型，默认是 `IfaaAuthType.AUTHTYPE_FINGERPRINT` ， 目前也只支持指纹
@property  (nonatomic) int authType;
// 用户 ID,不能为nil , 需要调用者传入
@property  (nonatomic, copy) NSString *userId;
// 交易ID ,不能为nil , 需要调用者传入
@property  (nonatomic, copy) NSString *transId;
// 业务数据,不能为nil , 需要调用者传入
@property  (nonatomic, copy) NSString *transPayload;
// trancType,不能为nil ,业务数据，交易类型。
@property  (nonatomic, copy) NSString *transType;
// reasonTitle:验证理由说明文字，会显示在对话框中部。
@property  (nonatomic, copy) NSString *reasonTitle;
// fallbackTitle:验证TouchID时在错误一次的后显示出的可选项按钮标题。
@property  (nonatomic, copy) NSString *fallbackTitle;
// 一次指纹注册的token， 次值在注册的时候由服务器生成返回并保存在终端
@property  (nonatomic, copy) NSString *token;
// useLocalAuth:注册时是否使用本地认证，默认：YES使用。
@property  (nonatomic) BOOL useLocalAuth;
//校验模式
@property  (nonatomic) IFAAProcessAction ifaaAction;
//校验模式
@property  (nonatomic) int strategy;
//手机号
@property  (nonatomic, copy) NSString *phoneNumber;
//公司名称
@property  (nonatomic, copy) NSString *company;
//操作
@property  (nonatomic, copy) NSString *action;
//SMS参数
@property  (nonatomic, copy) NSString *requestId;

/**
 ***初始化方法***
 - Params:
  - authType: 认证方式。请参考 `IfaaAuthType` 。
  - userId: 用户ID或者能够区别用户的唯一表示信息。
  - transId: 能够唯一区别本次IFAA操作的交易ID。此交易ID可以唯一定位此次操作。
  - transPayload: 需要做签名校验业务相关信息。
  - transType: 本次IFAA操作的交易类型。
  - reasonTitle: 验证理由说明文字，会显示在对话框中部。
  - fallbackTitle: 验证TouchID时在错误一次的后显示出的可选项按钮标题。
 - returns: self of `IFAABaseInfo`
 */
- (id)initWithAuthType:(int) authType
       userId:(NSString *)userId
      transId:(NSString *)transId
 transPayload:(NSString *)transPayload
    transType:(NSString *)transType
  reasonTitle:(NSString *)reasonTitle
fallbackTitle:(NSString *)fallbackTitle
            ifaaAction:(IFAAProcessAction) ifaaAction;

/**
***初始化方法***
- Params:
 - authType: 认证方式。请参考 `IfaaAuthType` 。
 - userId: 用户ID或者能够区别用户的唯一表示信息。
 - transId: 能够唯一区别本次IFAA操作的交易ID。此交易ID可以唯一定位此次操作。
 - transPayload: 需要做签名校验业务相关信息。
 - transType: 本次IFAA操作的交易类型。
 - reasonTitle: 验证理由说明文字，会显示在对话框中部。
 - fallbackTitle: 验证TouchID时在错误一次的后显示出的可选项按钮标题。
 - phoneNumber: 手机号
 - action ：操作
 - compay：公司
- returns: self of `IFAABaseInfo`
*/
- (id)initWithAuthType:(int) authType
                userId:(NSString *)userId
               transId:(NSString *)transId
          transPayload:(NSString *)transPayload
             transType:(NSString *)transType
           reasonTitle:(NSString *)reasonTitle
         fallbackTitle:(NSString *)fallbackTitle
            ifaaAction:(IFAAProcessAction) ifaaAction
              strategy:(int) strategy
           phoneNumber:(NSString *)phoneNumber
                action:(NSString *)action
               company:(NSString *)compay;


/**
 ***初始化方法***
 - Params:
 - authType: 认证方式。请参考 `IfaaAuthType` 。
 - userId: 用户ID或者能够区别用户的唯一表示信息。
 - transType: 本次IFAA操作的交易类型。
 - reasonTitle: 验证理由说明文字，会显示在对话框中部。
 - fallbackTitle: 验证TouchID时在错误一次的后显示出的可选项按钮标题。
 - returns: self of `IFAABaseInfo`
 */
- (id)initWithAuthType:(int) authType
                userId:(NSString *)userId
             transType:(NSString *)transType
           reasonTitle:(NSString *)reasonTitle
         fallbackTitle:(NSString *)fallbackTitle;


/**
 ***初始化方法***
 - Params:
 - authType: 认证方式。请参考 `IfaaAuthType` 。
 - reasonTitle: 验证理由说明文字，会显示在对话框中部。
 - fallbackTitle: 验证TouchID时在错误一次的后显示出的可选项按钮标题。
 - returns: self of `IFAABaseInfo`
 */
- (id)initWithAuthType:(int) authType
           reasonTitle:(NSString *)reasonTitle
         fallbackTitle:(NSString *)fallbackTitle;


// 获取注册请求 json 数据
- (NSString *)getRegInitJSON;
- (NSString *)getRegInitJSON:(NSString *) action;
// 获取注册响应 json 数据
- (NSString *)getRegRspJSON:(NSString *)ifaaMsg;

// 获取认证请求 json 数据
- (NSString *)getAuthInitJSON;
// 获取认证响应 json 数据
- (NSString *)getAuthRspJSON:(NSString *)ifaaMsg;
// 获取指位更新 json 数据
- (NSString *)getTemplateUpdateJSON:(NSString *)ifaaMsg;

// 获取注销请求 json 数据
- (NSString *)getDeregInitJSON;
// 获取查询注册状态 json 数据
- (NSString *)getCapRequetJSON;
// 获取查询注册状态 json 数据
- (NSString *)getCapRequetJSON:(NSString*) syncRequest;
//获取SMS初始化报文
- (NSString *)getSmsInitRequestJSON:(NSString *)ifaaMsg;
//校验短信验证码
- (NSString *)getSmsAuthOtpRequestJSON:(NSString *)otp;
@end
